package com.wenjie.plugin.util;

import android.content.Context;
import android.hardware.usb.UsbDevice;

import com.pantum.lld.DeviceManager;

import java.util.List;

import lombok.Getter;
import lombok.Setter;

/**
 * 全局实例对象保存
 */
@Getter
public class Global {

    // 使用volatile确保多线程环境中变量的可见性
    private static volatile Global instance;

    @Setter
    private Context context;

    /**
     * 是否已取得全部权限
     */
    @Setter
    private boolean hasAllPermission;

    /**
     * 打印机SDK实例对象
     */
    @Setter
    private DeviceManager printDevice;

    /**
     * USB设备列表
     */
    @Setter
    private List<UsbDevice> usbDeviceList;

    /**
     * 配置文件设置或读取工具
     */
    @Setter
    private ConfigurationUtil configurationUtil;

    /**
     * 打印机信息是否已配置
     */
    @Setter
    private boolean isConfigPrinter = false;

    // 私有构造方法，防止外部实例化
    private Global() {
        // 初始化操作
    }

    // 双重检查锁的单例实现
    public static Global getInstance() {
        if (instance == null) { // 第一次检查
            synchronized (Global.class) {
                if (instance == null) { // 第二次检查
                    instance = new Global();
                }
            }
        }
        return instance;
    }
}
